Method and apparatus to monitor a resolver

ABSTRACT

A device for monitoring a resolver disposed on a rotatable member is described herein, and includes a controller including a microprocessor circuit and an interface circuit connected to the resolver, wherein the microprocessor circuit includes a dual-core central processing unit (CPU), a pulse generator, a sigma-delta analog-to-digital converter (SDADC), a global memory device, an internal communication bus and a direct memory access device (DMA). The microprocessor circuit is disposed to control the pulse generator to generate an excitation pulse transferable to the excitation winding of the resolver, and control the SDADC to capture data from the secondary windings of the resolver and store the captured data in the memory buffer. A control routine is executed to detect an envelope for the captured data, and a rotor position for the resolver is determined based upon the detected envelope.

TECHNICAL FIELD

This disclosure is related to resolvers, and methods and systems fordetermining rotational positions associated therewith.

BACKGROUND

Devices that include rotatable members may employ resolvers to monitorangular position and rotational speed of the rotor. By way ofnon-limiting examples, powertrain systems may employelectrically-powered torque machines to generate tractive torque forpropulsion. Known torque machines include multiphase electricmotor/generators that electrically couple to energy storage devices viahigh-voltage electric buses and inverter modules. Torque machines mayuse resolvers to monitor rotational position and rotational speed, anduse such information for control and operation thereof.

A resolver is an electromechanical transducer that includes a rotorhaving an excitation winding that is coupled to the rotatable member anda stator having secondary windings that are coupled to a non-rotatingmember of the device, wherein electromagnetic coupling between theprimary winding and the secondary windings varies with the rotationalposition of the rotor. The primary winding may be excited with asinusoidal signal, which induces differential output signals in thesecondary windings. The magnitude of the electrical coupling onto thesecondary windings relates to the rotational position of the rotorrelative to that of the stator and an attenuation factor known as theresolver transformation ratio. In certain embodiments, the resolver is avariable reluctance resolver, in which an excitation winding is disposedin the stator, and an airgap between the rotor and the stator ismodulated on the rotor, which modulates the transformation ratiodepending on the rotational position. The output signals from thesecondary windings may be phase-shifted by 90 degrees of rotation withrespect to each other as a result of the secondary windings beingmechanically displaced by 90/PP degrees of mechanical rotation, whereinPP is the quantity of pole pairs of the resolver. Thus, electricalrotation is determined based upon mechanical rotation divided a quantityof electrical pole pairs. The primary winding may be excited with a sinewave reference signal, which induces differential output signals on thesecondary windings. The relationships between the resolver input and thedifferential output signals may be used to determine a sine and a cosineof the rotational angle of the rotor. Thus, the relationships betweenthe resolver input signal and the resolver output signals may beanalyzed to dynamically determine an angular position and rotationalspeed of the rotor, and thus the rotating member.

Known systems employing resolvers have resolver-to-digital conversionintegrated circuit devices to process input signals from the resolver togenerate rotational information that may be employed by a controller.

SUMMARY

A device for monitoring a resolver disposed on a rotatable member isdescribed herein, and includes a controller including a microprocessorcircuit and an interface circuit connected to the resolver, wherein themicroprocessor circuit includes a dual-core central processing unit(CPU), a pulse generator, a sigma-delta analog-to-digital converter(SDADC), a global memory device, an internal communication bus and adirect memory access device (DMA). The pulse generator is electricallyconnected to an excitation winding of the resolver. The SDADC iselectrically connected to secondary windings of the resolver, whereinthe SDADC includes a memory buffer in communication with thecommunication bus. The dual-core CPU includes a first CPU and a secondCPU. A clock synchronously controls clock speeds of the SDADC, the pulsegenerator, the first CPU and the second CPU. The microprocessor circuitis disposed to control the pulse generator to generate an excitationpulse transferable to the excitation winding of the resolver, andcontrol the SDADC to capture data from the secondary windings of theresolver and store the captured data in the memory buffer. The DMA iscontrolled to transfer the captured data from the memory buffer to theglobal memory device via the communication bus. A control routine isexecuted to detect an envelope for the captured data, and a rotorposition for the resolver is determined based upon the detectedenvelope.

The above features and advantages, and other features and advantages, ofthe present teachings are readily apparent from the following detaileddescription of some of the best modes and other embodiments for carryingout the present teachings, as defined in the appended claims, when takenin connection with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

One or more embodiments will now be described, by way of example, withreference to the accompanying drawings, in which:

FIGS. 1 and 2 schematically illustrate an electric motor rotatablycoupled to a load via a rotatable member that is monitored by a resolverand controlled by a motor controller, in accordance with the disclosure;

FIG. 3 schematically shows details of the motor controller describedwith reference to FIGS. 1 and 2, including a microprocessor circuit andan interface circuit, wherein the microprocessor circuit includes adual-core CPU, a pulse generator and a sigma-delta analog-to-digitalconverter (SDADC), in accordance with the disclosure;

FIG. 4 graphically shows output signals from secondary windings of aresolver, including SIN and COS signals and corresponding envelopesignals SIN_(ENV) and COS_(ENV) that may be extracted from the outputsignals SIN and COS, in accordance with the disclosure;

FIG. 5 graphically shows data associated with operation of elements ofthe dual-core CPU of the motor controller that includes independentlyexecuted processing of data from the resolver and control of theelectric motor, in accordance with the disclosure;

FIG. 6 graphically shows data associated with operation of an embodimentof the resolver, including a waveform from a pulse generator, a resolverexcitation signal, and primary and secondary signals output from anembodiment of the resolver, in accordance with the disclosure; and

FIG. 7 schematically shows details of a software flowchart forcontrolling an embodiment of the resolver, including an interruptroutine for generating envelope information from the signal outputs ofthe secondary windings, in accordance with the disclosure.

DETAILED DESCRIPTION

Referring now to the drawings, wherein the depictions are for thepurpose of illustrating certain exemplary embodiments only and not forthe purpose of limiting the same, FIGS. 1 and 2 schematically illustratedetails of a motor control system for controlling operation of anelectric motor 10 that rotatably couples to a load 17 via a rigidrotatable member 16, wherein rotational position of the rotatable member16 is monitored by a resolver 20 and operation is controlled via a motorcontroller 40. As shown, the resolver 20 is disposed on a side of theelectric motor 10 that is distal from the load 17, but the resolver 20may be disposed in any suitable location for monitoring rotation of therotatable member 16. The load 17 may be, by way of a non-limitingexample, a gear box 18 coupled to a drive wheel 19 that interacts with aground surface when employed as part of a powertrain system for a groundvehicle. The concepts described within may apply to any configurationthat includes a rotatable member 16 of a device, wherein the rotatablemember 16 is monitored by a resolver 20 to determine rotational positionand speed thereof.

The electric motor 10 may be any suitable electric motor/generatordevice, e.g., a permanent magnet device, and includes a stator 14 and arotor 12. As shown, the stator 14 is an annular device and the rotor 12is coaxially disposed within and coupled to the rotatable member 16.Alternatively, the rotor 12 may be configured as an annular device witha coaxial stator 14 disposed within. Operation of the electric motor 10is controlled via the motor controller 40 that preferably includes aninverter 45 in signal communication with a controller 50 via acommunication link 42. The inverter 45 electrically connects to thestator 14 of the electric motor 10 to transfer electric power, either togenerate torque on the rotor 12 that is transferred to the rotatablemember 16, or to react torque on the rotor 12 that is transferred fromthe rotatable member 16. The controller 50 communicates with theresolver 20 to monitor rotational position of the rotatable member 16.

The resolver 20 includes a resolver rotor 22 that fixedly attaches tothe rotatable member 16, and a resolver stator 24 that attaches to agrounding element, e.g., a motor case. The resolver rotor 22 may includea primary electrical winding referred to herein as an excitation winding23, and the resolver stator 24 includes two secondary electricalwindings referred to herein as first and second secondary windings 25,26, respectively. Alternatively, the resolver 20 may be a variablereluctance resolver having the excitation winding 23 and the first andsecond secondary windings 25, 26 disposed on the resolver stator 24,wherein the resolver rotor 22 modulates an airgap therebetween togenerate output signals on the first and second secondary windings 25,26.

The excitation winding 23 and the first and second secondary windings25, 26 operate as variable coupling transformers. In operation, thecontroller 50 communicates an excitation signal, preferably in the formof an analog sinusoidal reference signal, to the excitation winding 23via first lines 33. In certain embodiments, the sinusoidal referencesignal has a frequency in a range between 1 kHz and 15 kHz. The firstand second secondary windings 25, 26 generate first and second outputsignals in response to the excitation signal, which are communicated viasecond and third lines 35, 36. When the first and second secondarywindings 25, 26 are mechanically rotatably displaced by 90/PP degrees ofmechanical rotation, wherein PP is the quantity of pole pairs of theresolver about the axis of rotation of the rotor 12, the first andsecond output signals generated by the first and second secondarywindings 25, 26 are subjected to signal processing that includesdigitization and demodulation to determine a rotational angle of therotor 12 and hence the rotatable member 16. The resolver 20 may beconfigured with a single pole pair for the first and second secondarywindings 25, 26, meaning that 360 degrees of mechanical rotation of therotatable member 16 generates a signal indicating 360 degrees ofelectrical rotation from the resolver rotor 22. Alternatively, theresolver 20 may be configured with multiple pole pairs for the first andsecond secondary windings 25, 26. By way of example, when the resolver20 is configured with two pole pairs, 180 degrees of mechanical rotationof the rotatable member 16 generates a signal indicating 360 degrees ofelectrical rotation from the resolver rotor 22, and when the resolver 20is configured with three pole pairs, 120 degrees of mechanical rotationof the rotatable member 16 generates a signal indicating 360 degrees ofelectrical rotation from the resolver rotor 22.

The controller 50 includes a microprocessor circuit 60 and an interfacecircuit 55. The microprocessor circuit 60 preferably includes adual-core central processing unit (CPU) 65, a pulse generator 78 and asigma-delta analog-to-digital converter (SDADC) 70 that communicate viaan internal parallel communication bus 85. The pulse generator 78generates an electrical pulse that is transferred to the excitationwinding 23 of the resolver 20 via signal conditioning circuitryincluding, e.g., a low-pass filter 54 and differential-output amplifier53 that electrically connect via first lines 33 to the excitationwinding 23 of the resolver 20. The first and second secondary windings25, 26 of the resolver 20 communicate via second and third lines 35, 36,respectively, with input lines to the SDADC 70. The second and thirdlines 35, 36 include respective line filters 52 to removeelectromagnetic interference (EMI) noise before being sent to the SDADC70. The controller 50 communicates with the inverter 45 via thecommunications link 42.

The excitation winding 23 and the two secondary windings of the firstand second secondary windings 25, 26 operate as variable couplingtransformers. In operation, the controller 50 communicates an excitationsignal, preferably in the form of an analog sinusoidal reference signal,to the excitation winding 23 via the first lines 33. In certainembodiments, the sinusoidal reference signal has a frequency in a rangebetween 1 kHz and 15 kHz. The excitation signal may be generated by thepulse generator 78 in the form of a square wave reference signal, andpassed through the low-pass filter 54 to form the sinusoidal waveform.The second and third lines 35, 36 communicate first and second outputsignals that are generated by the first and second secondary windings25, 26 in response to the excitation signal. When the first and secondsecondary windings 25, 26 are mechanically rotatably displaced by 90/PPdegrees of rotation about the axis of rotation of the rotor 12 (whereinPP is the quantity of pole pairs of the resolver), the first and secondoutput signals generated by the first and second secondary windings 25,26 may be subjected to signal processing that includes digitization anddemodulation to determine a rotational angle of the rotor 12.

The motor controller 40 includes the microprocessor circuit 60 and othercircuitries to sense the feedback signals such as motor current, inputvoltage, motor position and speed. The motor controller 40 generates thecontrol signals for the power semiconductor switches of the inverter 45to generate current that is transferred to the stator 14 via three-phasemotor cables 15. The rotation of the rotatable member 16 coincides withthe rotation of the rotor 12 and the resolver rotor 22, and the resolverrotor position and speed are directly coupled with the position andspeed of the rotor 12. As an example of a permanent magnet motor drivesystem, the resolver rotor 22 is mounted to locate the north pole of themagnet in the rotor 12, permitting the motor controller 40 to controlthe electric motor 10 in relation to the motor magnet location tomaximize the output torque for a given current. Specifically absent fromany mechanization of the motor controller 40 described with reference toFIGS. 1 and 2 is a specialized integrated circuit in the form of aresolver-to-digital converter (RDC). Instead, an RDC system in the formof controller-executable routine(s) is described in detail herein.

Operation of an embodiment of the resolver 20 may be modeled as a rotarytransformer, including an excitation signal EXC that may be sent to theexcitation winding 23 and output signals SIN and COS from the secondarywindings of the first and second secondary windings 25, 26. Examplewaveforms of the output signals SIN and COS are shown graphically withreference to FIG. 4, including SIN 402 and COS 404. By way of anon-limiting example, the excitation signal EXC may have an excitationfrequency f_(e) that is near 10 kHz, and is preferably greater than arotational frequency f of the resolver rotor 22. A single rotationalperiod (1/f) of the resolver rotor 22 is indicated by period 415, andone half of a single rotational period (1/f_(e)) of the excitationfrequency f_(e) is indicated by period 405.

The output signals SIN 402 and COS 404 have position-dependentinformation (sin θ and cos θ) that includes a modulation signal sinω_(e)t, wherein ω_(e) is the excitation frequency. The excitation signalEXC may be represented as EQ. 1, and the output signals SIN and COS maybe represented as EQ. 2 and EQ. 3, respectively, in a well-balancedsystem, as follows:EXC=E sin ω_(e) t=EXC₊−EXC⁻  [1]SIN=kE sin θ sin(ω_(e) t−ϕ)=SIN₊−SIN⁻  [2]COS=kE cos θ sin(ω_(e) t−ϕ)=COS₊−COS⁻  [3]

wherein:

-   -   ω_(e) is the excitation frequency, in rad/s (=2πf_(e));    -   E is the excitation voltage;    -   k is a transformation ratio (gain) between the primary and the        secondary windings;    -   θ is the resolver position in radians (=ωt=2πf); and    -   ϕ is a phase delay introduced between the primary and secondary        windings.

The terms EXC₊ and EXC⁻ indicate the input signals from the first lines33, the terms SIN₊ and SIN⁻ indicate the output signals from the secondlines 35, and the terms COS₊ and COS⁻ indicate the output signals fromthe third lines 36. FIG. 4 further graphically shows a first envelopeSIN_(ENV) 412 associated with the SIN 402, and a second envelopeCOS_(ENV) 414 associated with the COS 404. The first envelope SIN_(ENV)412 and the second envelope COS_(ENV) 414 and associated parameters maybe extracted from the output signals SIN 402 and COS 404 employingsignal demodulation and other analyses that are described herein.

The sine and cosine signals of the rotational angle may be interpretedto determine a rotational angle of the resolver rotor 22, and hence arotational angle of the rotatable member 16 and the rotor 12. The motorcontroller 40 may employ the rotational angle of the rotatable member 16to control operation of the electric motor 10. It is appreciated thatthere may be a difference between the rotational angle as measured bythe resolver 20 and the rotational angle of the rotor 12 in relation tothe stator 14 of the electric motor 10 due to resolver offset ormechanical twisting of the rotatable member 16.

The first and second output signals generated by the first and secondsecondary windings 25, 26 in response to the excitation signal andcommunicated on the second and third lines 35, 36 are analog signals.The analog signals may be converted to a digital signal indicatingangular position and rotational speed of the rotating member employingthe motor controller 40.

FIG. 3 schematically shows details of the microprocessor circuit 60 andan interface circuit 55 of the motor controller 40, including thedual-core CPU 65, the pulse generator 78, the SDADC 70 and a directmemory access (DMA) device 80. The dual-core CPU 65 is preferablyconfigured as a dual-core central processing unit (CPU) including afirst CPU core 64 and a second CPU core 66, a global timer 62, and aglobal random-access memory (RAM) device 68, all of which communicatevia the communication bus 85. A clock 67 operates at a suitable speed,which preferably has an order of magnitude of 10 MHz in certainembodiments. The SDADC 70 is a dual-channel analog-to-digital converterdevice that employs an oversampling modulator, successive approximationand a digital decimation filter to generate high-resolution digitalsignals from lower frequency analog input signals. The dual channelSDADC 70 includes two SDADC devices, each of which is preferablyarranged to communicate with one of the second and third lines 35, 36that communicate the first and second output signals generated by thefirst and second secondary windings 25, 26 in response to the excitationsignal. Each of the SDADC devices 70 includes a differential amplifier76 that communicates with an ADC 74 that generates a digital signal thatis stored in a first-in first-out (FIFO) memory buffer 72. The clock 67drives a sigma-delta (SD) clock 75 in synchronization with a CPU clock79 and a pulse generator (PG) clock 77. The SD clock 75 controlssequencing of the analog-to-digital converter (ADC) 74. The FIFO memorybuffer 72 communicates with the bus 85. The DMA 80 generates aninterrupt signal 81 in response to register signals that arecommunicated from the FIFO memory buffer 72. The microprocessor circuit60 employs signal processing hardware and software routines to generateenvelope information, e.g., the first envelope SIN_(ENV) 412 and thesecond envelope COS_(ENV) 414, which may be employed to determine therotor position θ of the resolver and hence the rotating member 16. Thefirst envelope SIN_(ENV) 412 and the second envelope COS_(ENV) 414,which are described with reference to FIG. 4, may be extracted from theoutput signals SIN 402 and COS 404 employing analytical processesdescribed herein.

The dual-core CPU 65 facilitates processing of data from the resolver 20simultaneously and in parallel with executing control of the electricmotor 10. The second CPU core 66 of the dual-core CPU 65 is configuredto process the data delivered from the SDADC 70 and determine signalenvelope information, and the first CPU core 64 is configured to executemotor control based upon the signal envelope information that isdelivered from the second CPU core 66. The SDADC 70 and the pulsegenerator 78 are synchronized in the operation, and they share the SDclock 75 with the global timer 62. As such, the SD clock 75, the PGclock 77, and the CPU clock 79 have a common clock 67 and aresynchronized with each other. The pulse generator 78 generates asquare-wave pulse or modulated pulse train, which is filtered throughthe low-pass filter or band-pass filter 54 that is amplified by thedifferential-output amplifier 53 to form an analog sinusoidal referencesignal. The analog sinusoidal reference signal is communicated to theexcitation winding 23 via first lines 33 and serves as an excitationsignal that drives the primary winding of the resolver 20. The receivedsignals from the resolver secondary windings, SIN 402 and COS 404 aresampled by the SDADC 70. In the embodiment shown, the SIN+/SIN− signalscommunicated via lines 35 and the COS+/COS− signals communicated vialines 36 pass through one of the differential amplifiers 76 and issampled by the ADC 74. The SDADC 70 may run continuously, or,alternatively, may be programmed to convert a fixed quantity of samples.Each signal is preferably converted at an integer multiple of N timesthe excitation frequency f_(e), wherein N is preferably greater thanthree to avoid aliasing. For example, if the excitation frequency is 10kHz, N can be selected to be 10. The SDADC 70 can be configured to runat N×10 kHz=100 kHz continuously, the SDADC 70 can be configured tosample N=10 samples of data at every 10 μs (= 1/100 kHz) at the rising(or falling) edge of the output of the pulse generator 78, and restartthe actions at next rising (or falling) edge of the output of the pulsegenerator 78. The DMA 80 commands operation to pull data from each ofthe FIFO memory buffer 72 when the quantity of expected samples in acycle is met, and moves the data for storage in the global memory device68.

FIG. 5 graphically shows data associated with operation of the elementsof the dual-core CPU 65 to achieve independent parallel processing ofdata from the resolver 20 and control of the electric motor 10. Graphedparameters include a counter 510 that is output from the pulse generator78, a pulse generator output 520 in the form of a square-wave duty cyclethat is output from the pulse generator 78, ADC sampling 530 that isoutput from the SDADC 70, data transfer events 540 output from the DMA80, envelope detection event 550 output from the second CPU 66, andexecution of the motor control software 560 from the first CPU 64, allin relation to a common time base 570 that is output from the globaltimer 62.

The pulse generator 78 resets the value of the counter 510 when thecount equals the excitation period t_(e) 515 which is an inverse of theexcitation frequency f_(e), or 1/f_(e). When the counter 510 is reset tozero, the pulse generator output 520 is set to have a 50% duty cycle. Inthis example, N=16 is used. The SDADC 70 initiates ADC sampling 530 withthe rising edge of the pulse generator output 520, and collects data ata rate of every 1/16f_(e). When the collected number of data in eachchannel (SIN 402 and COS 404) becomes N, as indicated at 531, 532, and533, the DMA 80 initiates data transfer from the FIFO memory buffer 72to the global memory device 68 without loading either the first CPU 64or the second CPU 66. Example DMA data transfer events are indicated at541, 542, 543. When all the data transfer are complete, the DMA 80 callsthe interrupt service routine at the second CPU 66 to process theenvelope information for analog signals. At the beginning of eachenvelope detection event 550 at the second CPU 66, the excitation periodt_(e) of the pulse generator and time stamp t₁ from the pulse generatoroutput 520 and the time base 570 that is output from the global timer 62are synchronized. Timers in the microprocessor count in binary integers,and the global timer 62 can be configured to count for an extendedperiod of time and roll over. If the second CPU 66 is fast enough toreact the DMA interrupt request, time stamp t_(e) is close to thebeginning number, i.e., equal to 0 in normal operation. By monitoringthe time stamp t_(e), the synchronization between the SDADC 70 and thepulse generator 78 can be monitored. Time stamp t₁ is used to record thestarting time of the batch data processing. Example envelope detectionevents 551, 552, and 553 are indicated, and follow corresponding DMAdata transfer events 541, 542 and 543, respectively.

Asynchronously with the second CPU 66 envelope detection, the first CPU64 runs a separate interrupt service routine to execute motor controlsoftware 560 to generate PWM motor control outputs to control theelectric motor 10, as indicated by elements 561, 562, 563 and 564. Thisincludes capturing and analyzing pertinent data related to motorcontrol, including motor position/speed, current and input voltage andcalculating output voltage generation is then calculated based thereon.At the beginning of each interrupt, the first CPU 64 captures the timestamp t₀ of the global timer 62 when it prepares discrete and analoginputs for PWM control of the motor. The time difference between t₀ andt₁ is used to extrapolate position information θ[k] at the beginning ofthe motor control interrupt routine executed by the first CPU 64, inaccordance with EQ. 4, which assumes the speed ω does not change for ashort period of time such as during the PWM period. This provides a wayto accurately measure rotor position synchronously with controlling theelectric motor 10.θ[k]=θ _(raw) [n]+ω[k−1]×(t ₀ [k]−t ₁ [n]−t _(offset)),  [4]

-   -   wherein t₀[k]−t₁ [n]>0; and    -   wherein:    -   θ_(raw)[n] is a raw rotor position that is directly determined        from the envelope information of n-th step at the second CPU 66;    -   ω[k] is a speed determined from the position of the k-th step at        the first CPU 64; and    -   t_(offset) is a calibration for offset adjustment in time.

FIG. 6 graphically shows examples of signal waveforms including a pulsegenerator, a resolver excitation signal, and the primary and secondarysignals output from an embodiment of the resolver 20. In this example,the pulse generator 78 generates a square-wave 610 having a periodindicated by element 635. Alternatively, the pulse generator 78 maygenerate a pulse-width-modulated signal. The fundamental frequency,i.e., excitation frequency f_(e), of this signal is assumed to be anexcitation signal reference as employed in EQ. 1. The square-wave signal610 passes through the low-pass filter or band-pass filter 54 to createa smooth EXC signal 620 to eliminate any harmonic signal. The filteringmay introduce a phase shift ϕ₁ 622 from the original pulse generatoroutput 610 as shown. The EXC signal 620 is communicated to the resolverprimary winding 630, appearing as EXC signal 631 conceptually whenhandled in the software in the ideal condition to create the maximumamplitude of the envelope, and the signals from the secondary windings,e.g., SIN and COS 633, exhibit an amplitude change by the transformationratio k and an additional phase shift ϕ₂ 632 due to operation of theresolver 20 and the line filter 52. The sum of these two phase shiftforms a total phase shift between the reference excitation signal andSIN/COS signals at the input of the microcontroller, as follows:ϕ=ϕ₁+ϕ₂

A first envelope SIN_(ENV) associated with the SIN signal from thesecondary windings and a second envelope COS_(ENV) associated with theCOS signal from the secondary windings may be extracted using Fourierseries calculation once all the data in an excitation cycle arecollected, assuming that the envelope is slowly changing or almostconstant during an excitation period. Examples of a first envelopeSIN_(ENV) 412 associated with the SIN 402, and a second envelopeCOS_(ENV) 414 associated with the COS 404 are shown with reference toFIG. 4.

The SIN_(ENV) and COS_(ENV) can be calculated employing EQS. 5 and 6,respectively, using the known reference signal (including asoftware-introduced phase shift ϕ_(sw)), wherein

$t = \frac{2\pi\; i}{{N\omega}_{e}}$w within the excitation period.

$\begin{matrix}{{SIN}_{ENV} = {{\frac{2}{N}{\sum_{i = 0}^{N - 1}{{{SIN}\lbrack i\rbrack}\sin\mspace{11mu}\left( {\frac{2\pi\; i}{N} - \phi_{sw}} \right)}}} = {{kE}\mspace{11mu}\cos\mspace{11mu}\left( {\phi - \phi_{sw}} \right)\mspace{11mu}\sin\mspace{11mu}\theta}}} & \lbrack 5\rbrack \\{{COS}_{ENV} = {{\frac{2}{N}{\sum_{i = 0}^{N - 1}{{{COS}\lbrack i\rbrack}\sin\mspace{11mu}\left( {\frac{2\pi\; i}{N} - \phi_{sw}} \right)}}} = {{kE}\mspace{11mu}\cos\mspace{11mu}\left( {\phi - \phi_{sw}} \right)\mspace{11mu}\cos\mspace{11mu}\theta}}} & \lbrack 6\rbrack\end{matrix}$

This analysis assumes cos ϕ is constant when the phase shift (4) isconstant during the calculation of EQS. 5 and 6. Without the phase shiftϕ, each of the envelopes has a maximum amplitude kE. The mismatch of thephase shift between the hardware and the software introducescos(ϕ−ϕ_(sw)) that results in an amplitude reduction. In order to avoidthis, EQS. 7 and 8 are executed as part of envelope detection, asfollows:

$\begin{matrix}{{SIN}_{QUAD} = {{\frac{2}{N}{\sum_{i = 0}^{N - 1}{{{SIN}\lbrack i\rbrack}\cos\mspace{11mu}\left( {\frac{2\pi\; i}{N} - \phi_{sw}} \right)}}} = {{kE}\mspace{11mu}\sin\mspace{11mu}\left( {\phi - \phi_{sw}} \right)\mspace{11mu}\sin\mspace{11mu}\theta}}} & \lbrack 7\rbrack \\{{COS}_{QUAD} = {{\frac{2}{N}{\sum_{i = 0}^{N - 1}{{{COS}\lbrack i\rbrack}\cos\mspace{11mu}\left( {\frac{2\pi\; i}{N} - \phi_{sw}} \right)}}} = {{kE}\mspace{11mu}\sin\mspace{11mu}\left( {\phi - \phi_{sw}} \right)\mspace{11mu}\cos\mspace{11mu}\theta}}} & \lbrack 8\rbrack\end{matrix}$

The terms SIN_(QUAD) and COS_(QUAD) will have non-zero values when aphase mismatch occurs, and they may be employed to detect an actualhardware phase shift ϕ by adjusting ϕ_(sw), to maximize the values forSIN_(ENV) and COS_(ENV) that are calculated employing EQS. 5 and 6,respectively. The calculated values for the first envelope SIN_(ENV) andthe second envelope COS_(ENV) may be employed to determine the rotorposition θ, and the calculated values for the third envelope SIN_(QUAD)and the fourth envelope COS_(QUAD) along with SIN_(ENV) and COS_(ENV)may be employed to determine hardware phase shift ϕ.

FIG. 7 schematically shows details of a software flowchart for aninterrupt routine 700 that may be executed by an embodiment of the motorcontroller 40 to determine SIN_(ENV), COS_(ENV), SIN_(QUAD), COS_(QUAD)and sampling time t₁ of the envelope processing described herein. Theinterrupt routine 700 is preferably executed by the second CPU 66 toevaluate data and determine the first envelope SIN_(ENV) associated withthe SIN signal from the secondary windings and the second envelopeCOS_(ENV) associated with the COS signal from the first and secondsecondary windings 25, 26 of the resolver 20, as described withreference to FIGS. 4 and 6. This interrupt routine 700 may be executedin the second CPU 66 immediately after completion of each DMA datatransfer event. Example DMA data transfer events 541, 542, and 543, andexample envelope detection events 551, 552, and 553 are depicted in FIG.5. At the beginning of each execution of the interrupt routine 700, atime stamp t₁[n] is captured from the global timer 62. Next, thesoftware phase delay ϕ_(sw) that is identified outside of this routine,from the first CPU, is copied locally so that a constant number is usedto generate the internal signals

${{SIN}\mspace{11mu}\left( {\frac{2\pi\; i}{N} - \phi_{sw}} \right)\mspace{14mu}{and}\mspace{14mu}{COS}\mspace{11mu}\left( {\frac{2\pi\; i}{N} - \phi_{sw}} \right)}\mspace{14mu}$in the following loop. Then, EQS. 5-8 are executed to calculate valuesfor the first envelope SIN_(ENV), the second envelope COS_(ENV), thethird envelope SIN_(QUAD) and the fourth envelope COS_(QUAD). Table 1 isprovided as a key wherein the numerically labeled blocks and thecorresponding functions are set forth as follows, corresponding to theinterrupt routine 700.

TABLE 1 BLOCK BLOCK CONTENTS 702 Start Interrupt routine 704 Capturetime stamp 706 Capture phase delay 708 Initialize data buffer 710Execute envelope detection 711 Is the calculation complete? (Have beenthrough all the indexes?) 712 Increment index 714 Extract SIN_(ENV),COS_(ENV) and store in data buffer (EQS. 5 and 6) 716 ExtractSIN_(QUAD), COS_(QUAD) and store in data buffer (EQS. 7 and 8) 718Prepare for the next index calculation for EQS. 5 through 8 720 ExecuteStorage for Global Memory 722 Lock Semaphore 724 Scale and transfer toglobal memory SIN_(ENV), COS_(ENV), SIN_(QUAD) and COS_(QUAD) from databuffer with data rescale (completion of EQS. 5 through 8), and copy timestamp 726 Unlock Semaphore 730 End interrupt routine

The interrupt routine 700 executes in the second CPU 66 after a DMA datatransfer event is completed (702) and includes capturing a time stamp(704) and a phase delay (706) at the completion of the data transferevent. The data buffer is initialized, e.g., as a 32-bit buffer (708),and an envelope calculation loop 710 is executed. The envelope detectionloop (710) includes incrementing the index i (712). The first in-phaseenvelope SIN_(ENV) associated with the SIN data, and the second in-phaseenvelope COS_(ENV) associated with the COS date are extracted from thestored data, employing EQS. 5 and 6, respectively (714). Similarly, thefirst quadrature envelope SIN_(QUAD) associated with the SIN data, andthe second quadrature envelope COS_(QUAD) associated with the COS dataare extracted, employing EQS. 7 and 8, respectively (716). The phaseindex for the excitation signal is incremented (718), and execution ofthe envelope detection loop (710) reiterates until the calculations ofEQS. 5 through 8 are complete, as indicated by the index i (711)(1).When the buffer is filled (711)(1), a storage routine is executed (720).The results need to be stored in the global memory 68 so that the firstCPU 64 which is responsible for executing motor control can read withoutthe data being corrupted by the second CPU 66 and use the result for theposition/speed detection and diagnostics. In the multi-core CPUenvironment, the result cannot be written directly to the global memory68 since the first CPU 64 can fetch the result while the second CPU 66stores them, which may create a data coherency problem. In order toavoid such a situation, a semaphore is locked (722) to prevent thesecond CPU 66 from writing to or otherwise accessing the shared globalmemory 68 during data transfer. The data, in the form of the time stampand the SIN_(ENV), COS_(ENV), SIN_(QUAD), COS_(QUAD) values in the databuffer are transferred to the shared global memory 68 (724), and thesemaphore is unlocked to permit the second CPU 66 to have access to theshared global memory 68 (726). This iteration of the interrupt routine700 ends after the data transfer (730). The motor control routine readsmotor current, the inverter input voltage and position/speed informationfrom the sensor, and determines the output voltage of the power inverterin order to control the motor current, torque and speed based thereon.

The motor control routine executed in the first CPU 64 can run at afixed or variable switching frequency between 2 kHz and 20 kHz, forexample. At the beginning of the motor control routine in the first CPU64, the motor information for the motor control needs to be captured inorder to provide the best performance. First, the time stamp of theglobal timer is captured in order to capture t₀[k] in EQ. 4. Then, theroutine needs to read data from the global memory using the semaphore.The motor control routine reads motor current, the inverter inputvoltage and position/speed information from the sensor, and determinesthe output voltage of the power inverter in order to control the motorcurrent, torque and speed

Thus, a set of signals, SIN_(ENV), COS_(ENV), SIN_(QUAD), COS_(QUAD) andtime stamps t₀ and t₁ may be generated to determine motor speed andposition without time delays that may be introduced in the first CPU 64.The concepts described herein provide a systematic way to process theraw signals to calculate rotor position, rotor speed and a phase shiftϕ. In certain embodiments, the rotor position θ may be determined fromthe states for SIN_(ENV) and COS_(ENV) as follows, and there can benumerous other ways of executing and filtering the calculation based onall the information captured in the second CPU.θ_(raw)=tan⁻¹(COS_(ENV),SIN_(ENV))  [9]

As one non-limiting example of motor control using a PWM inverter, thecontroller 50 captures the motor position, motor speed, motor currentand inverter input voltage. These inputs are used to determine the motoroutput voltage at the next PWM cycle using a PI controller. Preferably,all of these signals need to be captured at the same timing, in order toavoid the performance degradation due to the signal delay between theinput and the output. In case of the analog signals such as the motorcurrent and inverter input voltage, they can be synchronized with theoutput PWM period or the cycle time for execution of the motor controlsoftware 560.

The raw motor position (that can be calculated either in CPU0 or CPU1)θ_(raw) can be used as in EQ. 4 to calculate the precise position formotor control. In this way, the proper motor position θ[k] that issynchronized with the execution of the motor control software 560 may beobtained just like the motor current and inverter voltage as described.The motor speed ω can determined from the increment of θ with properprocessing.

Thus, the operation described herein related to converting resolver datato digitally-readable data for use in position, speed and faultdetection may be executed employing software executed by a multi-coreprocessor relying upon information from conventional peripheral devices,and without relying upon a specialized RDC (resolver-to-digitalconverter) integrated circuit device. A synchronized pulse generatorreplaces the oscillator (OSC), and the processor directly reads theanalog signals after the line filter. The CPU core controls the pulsegenerator and A/D converter timing. CPU core calculates EXC signal (1),and send it out through the pulse generator, which eventually becomesEXC₊ and EXC⁻. The A/D converter samples SIN₊, SIN⁻, COS₊ and COS⁻signals that are synchronized with the excitation signal EXC.

The terms controller, control module, module, control, control unit,processor and similar terms refer to any one or various combinations ofApplication Specific Integrated Circuit(s) (ASIC), electroniccircuit(s), central processing unit(s), e.g., microprocessor(s) andassociated non-transitory memory component in the form of memory andstorage devices (read only, programmable read only, random access, harddrive, etc.). The non-transitory memory component is capable of storingmachine readable instructions in the form of one or more software orfirmware programs or routines, combinational logic circuit(s),input/output circuit(s) and devices, signal conditioning and buffercircuitry and other components that can be accessed by one or moreprocessors to provide a described functionality. Input/output circuit(s)and devices include analog/digital converters and related devices thatmonitor inputs from sensors, with such inputs monitored at a presetsampling frequency or in response to a triggering event. Software,firmware, programs, instructions, control routines, code, algorithms andsimilar terms mean any controller-executable instruction sets includingcalibrations and look-up tables. Each controller executes controlroutine(s) to provide desired functions, including monitoring inputsfrom sensing devices and other networked controllers and executingcontrol and diagnostic instructions to control operation of actuators.Routines may be executed at regular intervals, for example each 100microseconds during ongoing operation. Alternatively, routines may beexecuted in response to occurrence of a triggering event. Communicationbetween controllers, and communication between controllers, actuatorsand/or sensors may be accomplished using a direct wired link, anetworked communication bus link, a wireless link or any anothersuitable communication link. Communication includes exchanging datasignals in any suitable form, including, for example, electrical signalsvia a conductive medium, electromagnetic signals via air, opticalsignals via optical waveguides, and the like. Data signals may includeanalog, digitized analog, and discrete signals representing inputs fromsensors, actuator commands, and communication between controllers. Theterm ‘model’ refers to a processor-based or processor-executable codeand associated calibration that simulates a physical existence of adevice or a physical process. As used herein, the terms ‘dynamic’ and‘dynamically’ describe steps or processes that are executed in real-timeand are characterized by monitoring or otherwise determining states ofparameters and regularly or periodically updating the states of theparameters during execution of a routine or between iterations ofexecution of the routine.

The flowchart and block diagrams in the flow diagrams illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present disclosure. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It will also be notedthat each block of the block diagrams and/or flowchart illustrations,and combinations of blocks in the block diagrams and/or flowchartillustrations, may be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions. These computerprogram instructions may also be stored in a computer-readable mediumthat can direct a computer or other programmable data processingapparatus to function in a particular manner, such that the instructionsstored in the computer-readable medium produce an article of manufactureincluding instruction means which implement the function/act specifiedin the flowchart and/or block diagram block or blocks.

The detailed description and the drawings or figures are supportive anddescriptive of the present teachings, but the scope of the presentteachings is defined solely by the claims. While some of the best modesand other embodiments for carrying out the present teachings have beendescribed in detail, various alternative designs and embodiments existfor practicing the present teachings defined in the appended claims.

The invention claimed is:
 1. A device to control an electric motor usingan output voltage of a power inverter operatively connected to anelectric motor, wherein the output voltage is determined based upon arotational position of a resolver disposed on a rotatable member of theelectric motor, comprising: a controller including a microprocessorcircuit and an interface circuit connected to the resolver, wherein themicroprocessor circuit includes a dual-core central processing unit(CPU), a pulse generator, a sigma-delta analog-to-digital converter(SDADC), a global memory device, an internal communication bus and adirect memory access device (DMA); wherein the pulse generator iselectrically connected to an excitation winding of the resolver; whereinthe SDADC is electrically connected to secondary windings of theresolver; wherein the SDADC includes a memory buffer in communicationwith the communication bus; wherein the dual-core CPU includes a firstCPU and a second CPU; and a clock synchronously controlling clock speedsof the SDADC, the pulse generator, the first CPU and the second CPU;wherein the microprocessor includes an instruction set executable to:control the pulse generator to generate an excitation pulse transferableto the excitation winding of the resolver, control the SDADC to capturedata from the secondary windings of the resolver and store the captureddata in the memory buffer, control the DMA to transfer the captured datafrom the memory buffer to the global memory device via the communicationbus, detect an envelope for the captured data that is stored in theglobal memory device, determine, via the second CPU, a rotor positionfor the resolver based upon the detected envelope, and execute, via thefirst CPU, a motor control routine based upon the rotor position for theresolver, wherein the motor control routine includes determining a motorcurrent, an inverter input voltage and the rotor position for theresolver, and determining an output voltage of the power inverter tocontrol the electric motor based thereon.
 2. The device of claim 1,wherein the second CPU executes the control routine to detect theenvelope for the captured data.
 3. The device of claim 1, wherein thefirst CPU determines the rotor position for the resolver based upon thedetected envelope.
 4. The device of claim 1, wherein the pulse generatoris electrically connected to the excitation winding of the resolver viaa low-pass filter and a differential amplifier.
 5. The device of claim1, wherein the SDADC is electrically connected to secondary windings ofthe resolver via line filters disposed to remove electro-magneticinterference noise.
 6. The device of claim 1, wherein the resolver is avariable reluctance resolver.
 7. The device of claim 1, wherein thememory buffer is a first-in first-out memory buffer.
 8. A motorcontroller for an electric motor, comprising: a controller incommunication with an inverter and a resolver, wherein the resolver isdisposed on a rotatable member of the electric motor and the inverter iselectrically connected to the electric motor; the controller including amicroprocessor circuit and an interface circuit, wherein themicroprocessor circuit includes a dual-core central processing unit(CPU), a pulse generator, a sigma-delta analog-to-digital converter(SDADC), a global memory device, an internal communication bus and adirect memory access device (DMA); wherein the pulse generator iselectrically connected to an excitation winding of the resolver; whereinthe SDADC is electrically connected to secondary windings of theresolver; wherein the dual-core CPU includes a first CPU and a secondCPU; and wherein the second CPU processes data from the SDADCsimultaneously and in parallel with the first CPU executing control ofthe inverter electrically connected to the electric motor; wherein thesecond CPU is disposed to determine a rotor position for the resolver;and wherein the first CPU is disposed to execute PWM control of theinverter to control the electric motor based upon the rotor position forthe resolver.
 9. The motor controller of claim 8, wherein the SDADCdelivers data from the secondary windings of the resolver, wherein thesecond CPU processes the data from the SDADC to determine signalenvelope information, and wherein the first CPU executes motor controlbased upon the signal envelope information from the second CPU.
 10. Themotor controller of claim 8, further comprising: the SDADC including amemory buffer in communication with the communication bus; and whereinthe microprocessor circuit is disposed to: control the pulse generatorto generate an excitation pulse transferable to the excitation windingof the resolver, control the SDADC to capture data from the secondarywindings of the resolver and store the captured data in the memorybuffer, control the DMA to transfer the captured data from the memorybuffer to the global memory device via the communication bus, execute acontrol routine in the second CPU to process the data from the SDADC todetect an envelope, execute a control routine in the second CPU todetermine the rotor position for the resolver based upon the detectedenvelope, and execute a control routine in the first CPU to control theinverter to control the electric motor based upon the rotor position forthe resolver.
 11. The motor controller of claim 8, further comprising apulse generator clock disposed to control the pulse generator, a CPUclock disposed to control sequencing of the first and second CPUs and asigma-delta clock disposed to control sequencing of the SDADC, wherein acommon clock synchronously controls clock speeds of the pulse generatorclock, the CPU clock and the sigma-delta clock.
 12. The motor controllerof claim 8, wherein the memory buffer is a first-in first-out memorybuffer.
 13. The motor controller of claim 8, wherein the second CPUprocesses data from the SDADC simultaneously and in parallel with thefirst CPU executing control of the inverter electrically connected tothe electric motor.
 14. The motor controller of claim 8, wherein thecontroller does not include a resolver-to-digital converter (RDC)integrated circuit.
 15. A method for controlling an electric motor,wherein the electric motor includes a resolver disposed on a rotor ofthe electric motor and an inverter is electrically connected to theelectric motor, the method comprising: controlling a pulse generator togenerate an excitation pulse transferable to an excitation winding ofthe resolver; controlling a sigma-delta analog-to-digital converter(SDADC) to capture data from secondary windings of the resolver andstore the captured data in a memory buffer; controlling a direct memoryaccess device (DMA) to transfer the captured data from the memory bufferto a global memory device; detecting a data envelope based upon thecaptured data; determining, via a second controller of a dual-corecentral processing unit (CPU), a rotor position for the resolver basedupon the detected envelope; and controlling, via a first controller ofthe dual-core CPU, the electric machine based upon the rotor positionfor the resolver.
 16. The method of claim 15, further comprisingexecuting control of the inverter to control the electric motor basedupon the rotor position for the resolver.
 17. The method of claim 16,comprising detecting the data envelope based upon the captured data anddetermining the rotor position for the resolver based upon the detectedenvelope simultaneously and in parallel with executing control of theinverter to control the electric motor based upon the rotor position forthe resolver.
 18. The method of claim 15, further comprising controllinga pulse generator clock disposed to control the pulse generator at aclock rate that is synchronous with a sigma-delta clock disposed tocontrol sequencing of the SDADC.
 19. The device of claim 1, wherein thedevice does not include a resolver-to-digital converter (RDC) integratedcircuit.